/**
 * 代码生成类型枚举
 * 对应后端 CodeGenTypeEnum
 */
export const CODE_GEN_TYPE = {
  HTML: 'html',
  MULTI_FILE: 'multi_file',
  VUE_PROJECT: 'vue_project'
} as const

/**
 * 代码生成类型显示名称
 */
export const CODE_GEN_TYPE_NAMES = {
  [CODE_GEN_TYPE.HTML]: '原生HTML模式',
  [CODE_GEN_TYPE.MULTI_FILE]: '多文件模式',
  [CODE_GEN_TYPE.VUE_PROJECT]: 'Vue 工程模式'
} as const

/**
 * 代码生成类型选项列表
 */
export const CODE_GEN_TYPE_OPTIONS = [
  {
    value: CODE_GEN_TYPE.HTML,
    label: CODE_GEN_TYPE_NAMES[CODE_GEN_TYPE.HTML]
  },
  {
    value: CODE_GEN_TYPE.MULTI_FILE,
    label: CODE_GEN_TYPE_NAMES[CODE_GEN_TYPE.MULTI_FILE]
  },
  {
    value: CODE_GEN_TYPE.VUE_PROJECT,
    label: CODE_GEN_TYPE_NAMES[CODE_GEN_TYPE.VUE_PROJECT]
  }
]

/**
 * 代码生成类型
 */
export type CodeGenType = typeof CODE_GEN_TYPE[keyof typeof CODE_GEN_TYPE]

/**
 * 获取代码生成类型的显示名称
 * @param type 代码生成类型
 * @returns 显示名称
 */
export function getCodeGenTypeName(type: string): string {
  return CODE_GEN_TYPE_NAMES[type as CodeGenType] || type
}

/**
 * 验证代码生成类型是否有效
 * @param type 代码生成类型
 * @returns 是否有效
 */
export function isValidCodeGenType(type: string): type is CodeGenType {
  return Object.values(CODE_GEN_TYPE).includes(type as CodeGenType)
}
